module HC_FPGA_Demo_Top
(
    input CLOCK_XTAL_50MHz,
	input RESET,
	input  KEY4,
    input  RXD,
    output TXD,
    output LED0,
    output LED1,
    output LED2,
    output LED3,
	output[7:0] DIG,
	output[5:0] SEL
);


parameter CLK_FREQ = 50000000;    //定义系统时钟频率
parameter UART_BPS = 115200  ;    //定义串口波特率

//数码管显示的数
wire [29:0] smg_disp_data;

(* keep *)wire key_flag;
wire u_cnt1s_en;

wire         uart_rx_done;    //UART接收完成信号
wire  [7:0]  uart_rx_data;    //UART接收数据




key_filter u_key_filter (
  .clk(CLOCK_XTAL_50MHz),
  .rst_n(RESET),
  .din(KEY4),
  .dout(key_flag)
);

toggle_pin u_toggle_pin (
  .clk(CLOCK_XTAL_50MHz),
  .rst_n(RESET),
  .din(key_flag),
  .dout(u_cnt1s_en)
);

cnt1s u_cnt1s (
  .clk(CLOCK_XTAL_50MHz),
  .rst_n(RESET& ~uart_rx_done),
  .en(u_cnt1s_en),
  .din_dir(1),
  .din_initData(uart_rx_data[7:0]),
  .dout_data(smg_disp_data)
);

smg u_smg (
  .clk(CLOCK_XTAL_50MHz),
  .rst_n(RESET),
  .din_data(smg_disp_data),
  .dp_in(~0),
  .sel(SEL),
  .dig(DIG)
);

uart_rx #(
    .CLK_FREQ  (CLK_FREQ),
    .UART_BPS  (UART_BPS)
    )
    u_uart_rx(
    .clk           (CLOCK_XTAL_50MHz     ),
    .rst_n         (RESET   ),
    .rxd      (RXD    ),
    .dout_done  (uart_rx_done),
    .dout_data  (uart_rx_data)
    );

 uart_tx#(.UART_BPS(UART_BPS)) u_uart_tx
 (
     .clk (CLOCK_XTAL_50MHz),
     .rst_n  (RESET),
     .en (key_flag||uart_rx_done),
     .din_data(smg_disp_data[7:0]),
     .txd(TXD)
  );


//2s周期呼吸灯
breath_led u_breath_led
(
    .clk                 ( CLOCK_XTAL_50MHz     ),
    .rst_n               ( RESET   ),
    .dout                ( LED0 )
);

assign LED1=u_cnt1s_en;
assign LED2=uart_rx_done;
assign LED3=key_flag;

//prode_clk
// #(.CNT_MAX(10000))
// u_prode_clk
// (
//    .clk(CLOCK_XTAL_50MHz),
//    .rst_n(RESET),
//    .dout(LED2)
//);


endmodule
